package com.wxmp.dubbo.service;


import com.alibaba.dubbo.config.annotation.Service;
import com.wxmp.dubbo.dto.Message;

import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
/**
 * 微信dubbo服务接口
 * @author song.wang
 * @date 2019年4月16日
 * 注意：该dubbo接口统一使用的是com.github.binarywang封装的API，
 * 保持跟之前接口一致的情况下增加了一个appid的参数。支持多个公众号的调用
 */
@Service
public interface WechatDubboService {

	/**
	 * 生成微信公众号二维码
	 * @author song.wang
	 * @date 2019年2月22日
	 * @param sceneStr 为公众号二维码生成时携带的参数，如用户名等，用于绑定
	 * @return String 类型的url
	 * @throws Exception
	 *
	 * 更新日志
	 * 2019年2月22日 song.wang 首次创建
	 */
	public String createQrcodeByAppId(String appid,String sceneStr) throws Exception;
	
	/**
	 * 生成微信公众号二维码,使用默认公众号无须传appid
	 * @author song.wang
	 * @date 2019年7月9日
	 * @param sceneStr
	 * @return
	 * @throws Exception String
	 * 
	 * 更新日志
	 * 2019年7月9日 song.wang 首次创建
	 */
	public String createQrcode(String sceneStr) throws Exception;

	/**
	 * 发送模板消息
	 * @author song.wang
	 * @date 2019年2月22日
	 * @param openids 数组openids发送多个用户
	 * @param templateMessage
	 *
	 * 更新日志
	 * 2019年2月22日 song.wang 首次创建
	 */
	public void sendTemplateMsgByAppId(String appid,String[] openids, WxMpTemplateMessage templateMessage);
	
	/**
	 * 发送模板消息,使用默认公众号无须传appid
	 * @author song.wang
	 * @date 2019年7月9日
	 * @param openids
	 * @param templateMessage void
	 * 
	 * 更新日志
	 * 2019年7月9日 song.wang 首次创建
	 */
	public void sendTemplateMsg(String[] openids, WxMpTemplateMessage templateMessage);

	/**
	 * 发送模板消息，不同用户不同URL
	 * @author song.wang
	 * @date 2019年2月25日
	 * @param openids
	 * @param sendUrls
	 * @param templateMessage void
	 *
	 * 更新日志
	 * 2019年2月25日 song.wang 首次创建
	 */
	public void sendTemplateMsgByAppId(String appid,String[] openids, String[] sendUrls, WxMpTemplateMessage templateMessage);
	
	/**
	 * 发送模板消息，不同用户不同URL ,使用默认公众号无须传appid
	 * @author song.wang
	 * @date 2019年7月9日
	 * @param openids
	 * @param sendUrls
	 * @param templateMessage void
	 * 
	 * 更新日志
	 * 2019年7月9日 song.wang 首次创建
	 */
	public void sendTemplateMsg(String[] openids, String[] sendUrls, WxMpTemplateMessage templateMessage);

	/**
	 * 根据用户id获取用户信息
	 * status 有无用户；nickName 昵称；imageUrl 头像URL
	 * @author song.wang
	 * @date 2019年2月25日
	 * @param userId
	 * @return Message
	 * 
	 * 更新日志
	 * 2019年2月25日 song.wang 首次创建
	 */
	public Message getUserWechatInfo(String userId);

	/**
	 * 用户绑定微信
	 *
	 * @Author	李清学
	 * @param userId
	 * @param openid
	 * @return  Message
	 * @Date	2019年4月25日
	 *
	 * 更新日志
	 *
	 * 2019年4月25日 李清学  首次创建
	 *
	 */
	public Message bindWechatByAppId(String appid,Long userId, String openid);
	/**
	 * 用户绑定微信 ,使用默认公众号无须传appid
	 * @author song.wang
	 * @date 2019年7月9日
	 * @param userId
	 * @param openid
	 * @return Message
	 * 
	 * 更新日志
	 * 2019年7月9日 song.wang 首次创建
	 */
	public Message bindWechat(Long userId, String openid);

	/**
	 * 根据用户id解除绑定
	 * @author song.wang
	 * @date 2019年2月25日
	 * @param userId void
	 *
	 * 更新日志
	 * 2019年2月25日 song.wang 首次创建
	 */
	public void unbindWechat(String userId);

	/**
	 * 根据用户id更换通知
	 * @author song.wang
	 * @date 2019年2月26日
	 * @param userId
	 * @param useEmail 是否使用邮箱，使用则为true
	 * @param useWechat 是否使用微信，使用则为true
	 * @param useSystem 是否使用系统消息，使用则为true
	 * @return Message
	 *
	 * 更新日志
	 * 2019年2月26日 song.wang 首次创建
	 */
	public Message updateUserNotify(String userId, Boolean useEmail, Boolean useWechat, Boolean useSystem);

	/**
	 * 根据用户id获取用户通知设置
	 * @author song.wang
	 * @date 2019年2月26日
	 * @param userId
	 * @return Message
	 *
	 * 更新日志
	 * 2019年2月26日 song.wang 首次创建
	 */
	public Message getUserNotify(String userId);

	/**
	 * 企业微信发送卡片消息
	 * @author song.wang
	 * @date 2019年4月12日
	 * @param userIds 发送给的用户，多个逗号分隔
	 * @param title 卡片消息标题
	 * @param content 消息文本内容
	 * @param url 跳转地址
	 * @return Message，1000成功，9000失败
	 * 更新日志
	 * 2019年4月12日 song.wang 首次创建
	 */
	public Message sendWxCpCardMsg(String userIds, String title, String content, String url);

	/**
	 * 根据用户id（逗号分隔）查询企业微信用户未激活的用户
	 * @author song.wang
	 * @date 2019年4月17日
	 * @param userIds
	 * @return Message 1000成功，9000失败
	 * Message 中的data存放listUser：4336,王嵩  63,李清学
	 * 更新日志
	 * 2019年4月17日 song.wang 首次创建
	 */
	public Message listUserNotInCpWechat(String userIds);

	/**
	 * 根据用户id发送公众号模板消息
	 * @author song.wang
	 * @date 2019年4月17日
	 * @param userIds
	 * @param templateMessage setTemplateId可以从DtoConsts.TemplateMsgType获取
	 *
	 * 更新日志
	 * 2019年4月17日 song.wang 首次创建
	 */
	public void sendTemplateMsgByAppId(String appid,String userIds, WxMpTemplateMessage templateMessage) throws Exception;
	
	/**
	 * 根据用户id发送公众号模板消息 ,使用默认公众号无须传appid
	 * @author song.wang
	 * @date 2019年7月9日
	 * @param userIds
	 * @param templateMessage
	 * @throws Exception void
	 * 
	 * 更新日志
	 * 2019年7月9日 song.wang 首次创建
	 */
	public void sendTemplateMsg(String userIds, WxMpTemplateMessage templateMessage) throws Exception;
}
